/**
 * @Title: UserRightTools.java
 * @Package com.hfi.common.util
 * @author YangChaofeng 2016年6月22日 上午10:20:49
 * @Description: 用户权限工具类
 */
package com.mililoan.console.tools;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import com.alibaba.fastjson.JSONObject;
import com.mililoan.common.spring.SpringBeanFactory;
import com.mililoan.model.system.Menu;
import com.mililoan.model.system.User;
import com.mililoan.persist.system.UserRightDao;
import com.mililoan.service.module.system.MenuBo;


/**
 * @ClassName: UserRightTools
 * @Description: 用户权限工具类
 * @author YangChaofeng 2016年6月22日 上午10:20:49
 */
public class UserRightTools {

	public String hasButtonRight() {
		Map<String, String> retMap = new HashMap<String, String>();
		HttpServletRequest request = WebUtil.getThreadRequest();
		String url = request.getServletPath();
		String menuUrl = url.substring(1);
		User user = WebUtil.getSessionUser();
		if (null != user) {
			if (null == user.getFunCodes() || user.getFunCodes().size() == 0) {
				// 设置拥有的全部权限
				UserRightDao userRightDao = (UserRightDao) SpringBeanFactory.getBean("userRightDao");
				if (null != userRightDao) {
					user.setFuncs(userRightDao.getFuncsById(user.getId()));
				}
			}
			// 查询当前菜单的权限和按钮权限
			if (null != user.getFunCodes() && user.getFunCodes().size() > 0) {
				MenuBo menuBo = (MenuBo) SpringBeanFactory.getBean("menuBo");
				if (null != menuBo) {
					List<Menu> menuList = menuBo.getChildMenu(menuUrl);
					if (null != menuList) {
						for (Menu menu : menuList) {
							if (menu.getParentMenu() % 100 != 0) { // 说明是按钮
								boolean flag = false;
								for (Integer menuId : user.getFunCodes()) {
									if (menu.getMenuId() == menuId) { // 有权限
										flag = true;
										break;
									}
								}
								if (flag) {
									retMap.put(String.valueOf(menu.getMenuUrl()), "true");
								} else {
									retMap.put(String.valueOf(menu.getMenuUrl()), "false");
								}
							}
						}
					}
				}
			}
		}

		return JSONObject.toJSONString(retMap);
	}
}
